Ansible import_role, include_role, import_tasks, include_role
import* ステートメントはすべて、Playbook の解析時に事前処理される(静的処理)
include* ステートメントはすべて、Playbook の実行中に発生する際に処理される(動的処理)
import_tasks
再利用するタスクはタスクファイルに分割し、import_tasksで読み込む
こんな風にタスクを分割する。タスクが大きくなってきたらRoleに分割する
code:memo.yml
- import_tasks: ../tasks/httpd_install.yml
- import_tasks: ../tasks/httpd_config.yml
- import_tasks: ../tasks/httpd_service.yml
- import_tasks: ../tasks/httpd_contents.yml
code:roles/example/tasks/main.yml
# roles/example/tasks/main.yml
- name: added in 2.4, previously you used 'include'
import_tasks: redhat.yml
when: ansible_facts'os_family' | lower == 'redhat'
#
- import_tasks: debian.yml
when: ansible_facts'os_family' | lower == 'debian'
# macOSの場合
- import_tasks: macOS.yml
when: ansible_facts'os_family' == 'Darwin'
- import_tasks: ubuntu.yml
when: ansible_facts'distribution' == 'Ubuntu'
# roles/example/tasks/redhat.yml
- yum:
name: "httpd"
state: present
# roles/example/tasks/debian.yml
- apt:
name: "apache2"
state: present
include_tasks
import_role
code:memo
関連
Ansible imprort_playbook
参考
includeとimport
再利用可能な Playbook の作成 — Ansible Documentation
Ansible で Mac を構成管理するときの勘所 - Qiita
再利用可能な Playbook の作成 — Ansible Documentation
メモ
https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_reuse.html#playbooks-reuse